#include "reg_mod_listaprecios.h"
#include "ui_reg_mod_listaprecios.h"

Reg_Mod_ListaPrecios::Reg_Mod_ListaPrecios(QWidget *parent, ListaPrecios *list):
    QDialog(parent),
    ui(new Ui::Reg_Mod_ListaPrecios)
{
    ui->setupUi(this);

    ui->id_listaprecio->setVisible(false);
    this->setWindowFlags(Qt::Tool);
    this->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, this->size(), qApp->desktop()->availableGeometry()));

    band = false;
    //***Validaciones**//
    validatorS = new QRegExpValidator(QRegExp("[^0-9]{40}"),this);
    ui->nombre_lista->setValidator(validatorS);
    validatorN = new QIntValidator(1, 99999999);

    ui->tableWidget->resizeColumnsToContents();
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui->tableWidget->setSortingEnabled(true);
    ui->tableWidget->setAlternatingRowColors(true);
    ui->tableWidget->hideColumn(0);


    QDjango::setDebugEnabled(true);
    const int col1 = 0;
    const int col2 = 1;
    const int col3 = 2;
    const int col4 = 3;
    int row = 0;

    QSqlQuery queryId;
    queryId.exec("select coalesce(max(id_lista_precio),0) from listaprecios");
    int max_id;
    while (queryId.next())
    {
        max_id = queryId.value(0).toInt();
    }

    if(list != NULL)
    {
        this->setWindowTitle("Modificar Lista de Precios");
        band = true;

        ui->nombre_lista->setText(list->getNombre());
        QString nombre = ui->nombre_lista->text();

        QSqlQuery query;
        query.exec("select distinct id_lista_precio, analisis.nombre, cod_analisis, precio from listaprecios, analisis where analisis.id_analisis = listaprecios.cod_analisis and listaprecios.nombre = '"+nombre+"';");


        while (query.next())
        {

            ui->tableWidget->insertRow(row);
            QString cod_analisis = query.value(2).toString();
            QString nombre       = query.value(1).toString();
            QString precio       = query.value(3).toString();
            QString id_lista     = query.value(0).toString();

            QTableWidgetItem *itemCol1 = new QTableWidgetItem(cod_analisis);
            QTableWidgetItem *itemCol2 = new QTableWidgetItem(nombre);
            QTableWidgetItem *itemCol3 = new QTableWidgetItem(precio);
            QTableWidgetItem *itemCol4 = new QTableWidgetItem(id_lista);

            ui->tableWidget->setItem(row,col1,itemCol1);
            ui->tableWidget->setItem(row,col2,itemCol2);
            ui->tableWidget->setItem(row,col3,itemCol3);
            ui->tableWidget->setItem(row,col4,itemCol4);

            row++;

        }

    }
    else
    {
        this->setWindowTitle("Registrar Lista de Precios");

        if(analisis.count() > 0)
        {
            foreach (const Analisis &anal, analisis)
            {
                ui->tableWidget->insertRow(row);
                QString id          = QString::number(anal.getId_analisis());
                QString nombre      = anal.getNombre();
                QString precio      = 0;

                QTableWidgetItem *itemCol1 = new QTableWidgetItem(id);
                QTableWidgetItem *itemCol2 = new QTableWidgetItem(nombre);
                QTableWidgetItem *itemCol3 = new QTableWidgetItem(precio);

                ui->tableWidget->setItem(row,col1,itemCol1);
                ui->tableWidget->setItem(row,col2,itemCol2);
                ui->tableWidget->setItem(row,col3,itemCol3);

                max_id = max_id + 1;
                QTableWidgetItem *item = new QTableWidgetItem(QString::number(max_id));
                ui->tableWidget->setItem(row,col4,item);
                row++;

            }
        }
    }


}

Reg_Mod_ListaPrecios::~Reg_Mod_ListaPrecios()
{
    delete ui;
}

void Reg_Mod_ListaPrecios::on_boton_aceptar_clicked()
{

    if(ui->nombre_lista->text().simplified() == ""){

        if (ui->nombre_lista->text().simplified() == "")
        {
             ui->nombre_lista->setFocus();
             QToolTip::showText(ui->nombre_lista->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");

         }

    }
    else
    {

        QDjango::setDebugEnabled(true);
        ListaPrecios *listaprecios = new ListaPrecios();

        listaprecios->setNombre(ui->nombre_lista->text().simplified());

        for (int i = 0; i < ui->tableWidget->rowCount(); i++)
        {

            listaprecios->setCod_analisis(ui->tableWidget->model()->index(i,0).data().toInt());
            listaprecios->setPrecio(ui->tableWidget->model()->index(i,2).data().toInt());
            listaprecios->setId_lista_precio(ui->tableWidget->model()->index(i,3).data().toInt());
            listaprecios->setEstado("activo");
            listaprecios->save();

        }

        this->close();


    }

}

void Reg_Mod_ListaPrecios::on_boton_cancelar_clicked()
{
    this->close();
}
